#include "jq8400.h"

static void JQ8400_SendByte(uint8_t Byte)
{
	HAL_UART_Transmit(&JQ8400_UART,&Byte,1,100);
}

static void JQ8400_SendMultipleByte(uint8_t Byte[],uint8_t len)
{
	HAL_UART_Transmit(&JQ8400_UART,Byte,len,100);
}

void  JQ8400_CombinePlayingMusic(uint8_t *DATA,uint8_t Len);

void JQ8400_SetVoiceMax(void)
{
	JQ8400_SendByte(0xAA);
	JQ8400_SendByte(0x13);
	JQ8400_SendByte(0x01);
	JQ8400_SendByte(0x1E);
	JQ8400_SendByte(0xDC);
}

/**
 * @brief 设置音量大小或者播放指定音乐
 * 
 * @param i 指定曲目播放 范围：0-99
 */
void playMusic(int i)
{
		// 播放指定音乐
		// uint8_t temp[6] = {0xAA,0x07,0x02,(uint8_t)(i>>8),(uint8_t)i};
		// temp[5] = 0xAA + 0x07 + 0x02 + (uint8_t)(i>>8) + (uint8_t)i;
		// JQ8400_SendMultipleByte(temp,6);
		// JQ8400_SendByte(0xAA);
		// JQ8400_SendByte(0x07);
		// JQ8400_SendByte(0x02);
		// JQ8400_SendByte(0);
		// JQ8400_SendByte(i);
		// JQ8400_SendByte((0xAA + 0x07 + 0x02+i));

		uint8_t Data[] = {i};
		JQ8400_CombinePlayingMusic(Data,1);
		if(i == 80)
		{
			uint8_t Data[] = {0,1,2,3,4,5,6,7,8,9,10};
			JQ8400_CombinePlayingMusic(Data,11);
		}
}

// 组合播放最大容量
#define ZH_MAX 50
/**
 * @brief 多个音频组合播放
 * 
 * @param DATA 一个数组，存放要播放的曲目
 * @param Len 要播放的曲目的数量
 */
void  JQ8400_CombinePlayingMusic(uint8_t *DATA,uint8_t Len)
{
	uint16_t CRC_data=0,i = 3;
	uint8_t Buffer[ZH_MAX] ={0xaa,0x1b};
	Buffer[2] = Len*2;			//计算长度
	CRC_data = CRC_data + 0xaa + 0x1b + Buffer[2];
	while(Len--)
	{
		Buffer[i] = *DATA/10+0x30;			//取出十位
		CRC_data = CRC_data + Buffer[i];
		i++;
		Buffer[i] = *DATA%10+0x30;			//取出个位
		CRC_data = CRC_data + Buffer[i];
		i++;
		DATA++;
	}
	Buffer[i] = CRC_data;
	i++;
	JQ8400_SendMultipleByte(Buffer,i);
}
